圖片來源:(https://forum.gamer.com.tw/C.php?bsn=43473&snA=7431)
圖片來源:(https://se.ewi.tudelft.nl/desosa2019/chapters/scipy/)
是建立在 NumPy 上的 Python 函式庫,提供眾多科學與工程計算所需的算法與函式。涵蓋數值積分、優化、線性代數、插值、統計、訊號處理、圖像處理等等
數值積分
:計算定積分優化
:求解最佳化問題線性代數
:提供高效的線性代數運算插值
:在數據點之間進行插值統計
:提供各種統計分析功能訊號處理
:進行訊號處理相關的運算圖像處理
:提供圖像處理的工具scipy.integrate |
數值積分、常微分方程求解 |
---|---|
scipy.optimize |
優化問題求解 |
scipy.linalg |
線性代數運算 |
scipy.interpolate |
插值 |
scipy.stats |
統計分布、統計測試 |
scipy.signal |
訊號處理 |
scipy.sparse |
稀疏矩陣 |
scipy.special |
特殊函數 |
scipy.spatial |
空間數據結構與算法 |
scipy.cluste |
聚類分析 |
可以使用 pip 來安裝 SciPy
pip install scipy
以下是一個簡單範例,如何使用 SciPy 進行數值積分
from scipy import integrate
def f(x):
return x**2
result, error = integrate.quad(f, 0, 1)
print(result)
import numpy as np
from scipy import optimize
# 求解方程組
def f(x):
return [x[0]**2 + x[1]**2 - 1, x[0] - x[1]]
result = optimize.root(f, [0, 0])
print(result.x)
優化
from scipy import optimize
def f(x):
return x**2 + 10*x
result = optimize.minimize(f, x0=0)
print(result.x)
線性代數
from scipy import linalg
A = np.array([[1, 2], [3, 4]])
b = np.array([5, 6])
x = linalg.solve(A, b)
print(x)
插值
from scipy import interpolate
x = np.linspace(0, 10, 11)
y = np.sin(x)
f = interpolate.interp1d(x, y)
xnew = np.linspace(0, 10, 101)
ynew = f(xnew)
積分
from scipy import integrate
def f(x):
return np.sin(x)
result, error = integrate.quad(f, 0, np.pi/2)
print(result)
統計
from scipy import stats
data = np.random.randn(1000)
mean, var, skew, kurt = stats.describe(data)
print(mean, var, skew, kurt)
解常微分方程
from scipy.integrate import solve_ivp
def f(t, y):
return -y
sol = solve_ivp(f, [0, 10], [1])
最小二乘法
from scipy.optimize import least_squares
def func(x, a, b):
return a * x + b
傅立葉變換
from scipy.fft import fft, ifft
# ...
SciPy 是 Python 生態系中一個強大的科學計算工具,它提供豐富的函式和功能,可以幫助快速解決各種科學計算問題。如果需要進行數值計算、數據分析、訊號處理等等工作,那麼 SciPy 將是一個非常有用的工具